iT邦幫忙

2026 iThome 鐵人賽

DAY 1
0

If I had an hour to solve a problem I'd spend 55 minutes thinking about the problem and 5 minutes thinking about solutions - Albert Einstein

本專欄目標

在製造業情境中數據無所不在,從環境監控、製程檢驗,到產品能力檢測全部都是數據。但我們半導體工程師常常缺乏一個用的順手的工具去處理這些數據,而是只能花大量時間用 excel 手拉、又或是使用緩慢、難以修改的 VBA 腳本,然後在下次數據表頭 (Table Header) 格式再變化時,對著 VBA code 發呆。

本篇專欄會以一個自學、半導體工程師的角度,講解如何運用 Python 的模組 (Pandas/ PySide6) 編寫符合自己需求的數據分析工具。並且本專欄會著重以下部分:

  • 如何做出一套 UI 介面讓使用者可以讀取資料、設定SPEC、然後輸出結果

  • 如何做出模組化程式設計(Modular Design),讓同一套方式在不同專案中快速套用

  • 如何讓程式可以快速被修改,例如增加計算條件、修改內部參數等

  • 如何應對工廠數據常見情境 (例如不同產品有不同表頭、莫名其妙的空格、防止使用者設定異常 SPEC 等)

期許讀者在看完此篇專欄後,無論是自己寫或是 vibe coding 都能做出自己的模組化工具箱來應對多變的工廠環境,最後大家一起早點下班。

本專欄的編寫方式

本專欄會在30天內,提供Pandas、PySide6、Pydantic,以及一些Model-View-Controller (MVC) 模式的相關文章。因為內容上包山包海 (Pandas、PySide6 都可以單獨出一份鐵人賽了),且我希望讀者在閱讀完後可以直接使用,因此本文的寫法會完全以實戰、經驗分享為主。基礎教學的部分因篇幅有限,且網路上太多前輩的優秀教學,我就不在此獻醜了。

這篇專欄的TA

本專欄並不是 Python 入門,而是半導體工程師在工廠環境中的實戰經驗。以下這些人(也是我)通常需要分析大量數據,但若自己寫程式常常是從上面跑到下面,比吸管還通暢,也導致程式是一長串難以修改。因此本專欄的預設對象是有數據分析的經驗 (如 MATLAB 、 VBA 等),但沒有對程式結構多加著墨的:

  • 製程/整合/產品工程師

  • 碩博士生

編寫動機

先介紹我的背景

  • 國立中山大學 物理學系 (2013/09 ~ 2017/06)

  • 國立交通大學 電子物理所 (2017/09 ~ 2020/01)

  • 富采光電 產品工程師 (2020/04~)

從上面的背景來看,想必寫出來的都是義大利麵程式碼 (Spaghetti code)。

這個專欄是我一面做著產品工程師工作、一面因應產品分析需求編寫相關工具的心得。我很討厭手拉 excel,也因此開始接觸 Python 將數據分析自動化,然後再加上 UI 給同事用。但隨著我做的工具越來越多,每個寫出來的程式都是一坨O、很難維護,而且每次我都要重寫一次相同的部分,我開始找如何讓程式碼易讀易修改的方法,最後產生了這篇專欄。

學習地圖

本文大約分成以下幾個區塊:

主題一:使用 Pnadas 執行數據清洗、統計與 Matplotlib 繪製圖面

從開發環境出發,針對半導體產線常見的雜亂檢測數據,利用 Pandas 進行高效清洗、分組統計與報表輸出,並結合 Matplotlib 繪製標準 Wafer Map,打造不依賴 Excel 的快速分析腳本。

  • Day 2:編寫環境的建置

  • Day 3:別再做資料手工藝 - 使用 Pandas 清理雜亂的 wafer 檢測資料

  • Day 4:週會救星 - 應用 Groupby 與 Pivot table 的組合快速做出各式報表

  • Day 5:資料處理的最後一哩路 - Pandas 的 csv/ xlsx 輸出設定

  • Day 6:有圖才有真相 - 如何預處理資料與使用 Matplotlib 畫出 wafer mapping

  • Day 7:為你的圖片加上醬汁 - 如何用 Matplotlib 畫出格式正確的 wafer mapping

  • Day 8:從數據讀取到報表生成 - 建構多用途且可重複使用的分析腳本

主題二:使用 Qt Designer 做出 UI 與容器佈局

不要再用文字定義圖面了,我們透過 Qt Designer 視覺化排版,輕鬆做出有按鈕/ 輸入/ 輸出介面的 UI。並深入 Layout 容器與多頁面佈局,讓介面在不同螢幕縮放下依然規整專業。

  • Day 9: 不要再對 UI code 通靈了 - 使用 QT designer 做出你的第一個 UI 介面

  • Day 10: 工欲善其事 - QT designer 的常用物件導覽 # 1

  • Day 11: 必先利其器 - QT designer 的常用物件導覽 # 2

  • Day 12: 不以規矩,不能成方圓 - QT designer 內的 layout 物件與命名規範

  • Day 13: 魔術大空間 - 使用 QT 的多頁面容器做分類與佈局

主題三:專案的根基 - 如何做出模組化的開發與 MVC 架構

覺得長長一篇的 code 很難修改與重複使用嗎?我們會從單向平鋪的腳本跨越到物件導向(OOP)。運用 class 封裝 data pipline、做出功能化模組。並且導入晶圓產線分工思維的 MVC 架構,讓我們的 code 分門別類好維護。

  • Day 14:一為全,全為一 - 使用 Python class 整合function、引數與結果

  • Day 15:程式碼就該像生產線一樣分組 - 談 MVC 架構與關注點分離

  • Day 16:千里姻緣一線牽 - 用 signal 與 slot 為 UI 接上功能

  • Day 17:不用吃銀杏也有好記憶 - 使用 json 模組讓 GUI 程式有長久記憶

  • Day 18:萬丈高樓平地起 - 從零開始架構一個功能模組

主題四:模組化開發的應用 - 針對 UI 內表格的各種輔助模組開發

無論是在 UI 內還是我們真實的工作情況,表格都是我們最常用的物件。這裡我們會應用主題三提到的功能模組開發,針對 UI 內的 table 設計讀寫、複製貼上、格式規範等模組。

  • Day 19:解放你的表格 - QTableWidget 的一站式功能管理

(剩餘文章編寫中)

To be continued →

在出發之前,為自己打造最舒適的工作環境


下一篇
Day 2:編寫環境的建置
系列文
用 Python 打造最順手的良率統計工具:半導體工程師的模組化開發之道4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言